package com.hl.qzzpbackend.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hl.qzzpbackend.common.DeleteRequest;
import com.hl.qzzpbackend.model.dto.industryType.IndustryTypeAddRequest;
import com.hl.qzzpbackend.model.dto.industryType.IndustryTypeQueryRequest;
import com.hl.qzzpbackend.model.dto.industryType.IndustryTypeUpdateRequest;
import com.hl.qzzpbackend.model.entity.IndustryType;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hl.qzzpbackend.model.vo.IndustryTypeAndPositionTypeVO;
import com.hl.qzzpbackend.model.vo.IndustryTypeVO;

import java.util.List;

/**
 * 行业类型 业务层
 *
 * @author helong
*/
public interface IndustryTypeService extends IService<IndustryType> {

    /**
     * 添加行业类型
     * @param industryTypeAddRequest 添加行业类型请求类
     * @return 是否成功
     */
    boolean industryTypeAdd(IndustryTypeAddRequest industryTypeAddRequest);

    /**
     * 修改行业类型
     * @param industryTypeUpdateRequest 修改行业类型请求类
     * @return 是否成功
     */
    boolean industryTypeUpdate(IndustryTypeUpdateRequest industryTypeUpdateRequest);

    /**
     * 删除行业类型
     * @param deleteRequest 删除请求类
     * @return 是否成功
     */
    boolean industryTypeDelete(DeleteRequest deleteRequest);


    /**
     * 行业类型分页查询
     * @param industryTypeQueryRequest 行业类型分页查询请求类
     * @return pageVO
     */
    Page<IndustryTypeVO> getIndustryTypePage(IndustryTypeQueryRequest industryTypeQueryRequest);

    /**
     * 获取查询条件
     * @param industryTypeQueryRequest 行业类型分页查询请求类
     * @return 查询条件
     */
    LambdaQueryWrapper<IndustryType> getQueryWrapper(IndustryTypeQueryRequest industryTypeQueryRequest);

    /**
     * 获取行业类型VO
     * @param industryType 行业类型
     * @return 行业类型VO
     */
    IndustryTypeVO getIndustryTypeVO(IndustryType industryType);

    /**
     * 获取行业类型VO列表
     * @param industryTypeList 行业类型列表
     * @return 行业类型VO列表
     */
    List<IndustryTypeVO> getIndustryTypeListVO(List<IndustryType> industryTypeList);



    /**
     * 获取所有行业类型且包含岗位类型
     * @return 所有行业类型且包含岗位类型
     */
    List<IndustryTypeAndPositionTypeVO> getListWithPositionType();

    /**
     * 获取所有行业类型
     * @return 所有行业类型
     */
    List<IndustryTypeVO> getIndustryTypeVOList();
}
